package thread;

/**
 * 线程测试类
 */
public class ThreadCommunicationDemo {

    public static void main(String[] args) throws InterruptedException {
//        String[] s1 = new String[1]; // 定义一个长度为 1 的字符串数组，用于存储子线程中的字符串
//        Object lock = new Object(); // 创建锁对象
//        new Thread(()->{
//            synchronized (lock){
//                s1[0]="Hello JSDTN2211";
//                lock.notify();
//            }
//        }).start();
//        synchronized (lock){ // 获取锁
//            lock.wait();// 让主线程等待
//        }
//        System.out.println(s1[0].toUpperCase() );
//================================================================================
        String[] s1 = new String[1]; // 定义一个长度为 1 的字符串数组，用于存储子线程中的字符串
        //生产者线程new Thread
        new Thread(()->{
            synchronized (ThreadCommunicationDemo.class){
                s1[0]="Hello JSDTN2211";
                //唤醒阻塞的线程
                ThreadCommunicationDemo.class.notify();
            }
        }).start();
        //消费者线程 主线程
        synchronized (ThreadCommunicationDemo.class){ // 获取锁
            while (s1[0]==null){
                ThreadCommunicationDemo.class.wait();// 让主线程阻塞(等待)
            }
            System.out.println(s1[0].toUpperCase() );
        }
    }
}
